home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / cone / dj1000.c < prev    next >
C/C++ Source or Header  |  1997-10-13  |  3KB  |  129 lines

  1. /*
  2.  
  3.   たんぼさまんさのデジカメはyc記録?とにかくテストだ!
  4.  
  5. おそらくの予想:
  6. 1ピクセル2バイト(Y1バイト・C1バイト:unsigned char)
  7. 1ライン256ピクセル
  8.  
  9. ただし、なんかしらんけど、
  10. 偶数ラインのデータはshort単位でエンディアンがひっくり返っている雰囲気
  11.  
  12. 504*378出力のとき
  13. 横方向には2ピクセルづつならべる。
  14. さらに、奇数ラインの時は1ドットづらして出力。
  15.         ↓切り捨て位置
  16. 0:      o1o1o2o2o3o3o4o4o5o5o6o6
  17. 1:        e1e1e2e2e3e3e4e4e5e5e6e6
  18. 2:      o1o1o2o2o3o3o4o4o5o5o6o6
  19. 3:        e1e1e2e2e3e3e4e4e5e5e6e6
  20. 縦方向には256ライン中252を3/2倍に脹らませる。
  21.  
  22. 320*240
  23. 縦方向256ライン中、データが有効と思われるのは最初から240ライン
  24. へたに上8ラインから読み込んだりしても、下8ラインが無効っぽい。
  25. 横方向へは5/4倍でいいか
  26.  
  27. ABCD       AABCD     *ディザ応用引き伸ばしパターン
  28. EFGH   →  EFGGH
  29. IJKL       IJJKL
  30. MNOP       MNOPP
  31.  
  32.  
  33.   
  34. */
  35.  
  36.  
  37. #include <stdio.h>
  38. #include <graph.h>
  39.  
  40.  
  41. unsigned short buf[256*256];
  42.  
  43.  
  44. main(argc, argv)
  45. int argc;
  46. char *argv[];
  47. {
  48.   FILE *fp;
  49.   int x, y;
  50.   int r, g, b;
  51.   
  52.   unsigned short col;
  53.  
  54.   if( argc!=2 ) {
  55.     printf("DJ-1000用画像ローダ:現在モノクロ版\nusage:@>dj1000 file[.dat]\n");
  56.     goto quick_exit;
  57.   }
  58.   
  59.   fp=fopen(argv[1], "rb");
  60.   if( fp==NULL ) {
  61.     printf("err:画像ファイル%sが見つかりません\n",argv[1] );
  62.     goto quick_exit;
  63.   }
  64.   fread(buf, 2, 256*256, fp);
  65.   fclose(fp);
  66.   
  67.   
  68.   screen(1, 3, 1, 1);
  69.   
  70.   for( y=0; y<256; y++ ) {
  71.     for( x=0; x<255; x++ ) { //はみ出しの関係で右端1ドット無視
  72.       col=buf[y*256+x];
  73.  
  74. /* * yc記録なら関係なしよん
  75.       {
  76.     unsigned short t0, t1;
  77.     t0=(col>>8)&0x00ff;
  78.     t1=col&0x00ff;
  79.     
  80.     col=(t1<<8)|t0;
  81.       }
  82. * */
  83.  
  84. //りとるでためしたリスト
  85. // 0rrrrrgggggbbbbb まあまあ
  86. // 0rrrrrbbbbbggggg だめ
  87. // 0gggggrrrrrbbbbb ややだめ
  88. // 0gggggbbbbbrrrrr がめん真っ赤
  89. // 0bbbbbrrrrrggggg だめ
  90. // 0bbbbbgggggrrrrr
  91.  
  92. //リトルで試した r5, g6, b5
  93. // rrrrrggggggbbbbb
  94.  
  95.       r=(col>>8)&0b0000000011111111;
  96.       g=(col&0b0000000011111111);
  97. //    b=(col&0b0000000000000000);
  98.  
  99.       r=r>>3;
  100.       g=g>>3;
  101.     //  b=r;
  102.       
  103. //      col=(r<<6)|(g<<11)|(b<<1);
  104.  
  105.       if( y%2 ==0) {
  106.     col=(r<<6)|(r<<11)|(r<<1);
  107.     pset(x*2,   y/2*3,   col);
  108.     pset(x*2+1, y/2*3,   col);
  109.     pset(x*2  , y/2*3+1, col);
  110.       }
  111.       else {
  112.     col=(g<<6)|(g<<11)|(g<<1);
  113.     
  114.     pset(x*2+1, (y-1)/2*3+1, col);
  115.     pset(x*2+1, (y-1)/2*3+2, col);
  116.     pset(x*2+2, (y-1)/2*3+2, col);
  117.       }
  118.       
  119.     }
  120.   }
  121. quick_exit:
  122.   ;
  123. }
  124.  
  125.  
  126. /*  [ EOF ] */
  127.  
  128.  
  129.